test(ui5-color-palette-popover): investigation of failing tests in pipeline#13356
Open
test(ui5-color-palette-popover): investigation of failing tests in pipeline#13356
Conversation
Collaborator
|
🚀 Deployed on https://pr-13356--ui5-webcomponents-preview.netlify.app |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is for investigation purposes only — not for merging.
Deep AI Analysis ( to be verified )
What was going wrong?
Preact has an internal system for handling events that cross shadow DOM boundaries. It uses a counter to avoid processing the same event twice.
Here's what was happening:
<ui5-button>— the event fires inside the button's shadow root<ui5-button>host element sitting insideColorPalette's shadow DOMColorPalettere-rendered between step 1 and step 2The result? Key handlers like
_onDefaultColorKeyDownand_onMoreColorsKeyDownsilently don't fire, so focus stays stuck on the original element.What did we change?
We moved the
onKeyDownandonKeyUphandlers from the<Button>elements to their parent<div>wrappers.Why does this fix it?
The issue boils down to how many shadow DOM boundaries the event crosses:
<div>in the same shadow DOM scope. The event only passes through one Preact proxy, so there's no deduplication race and no skipped handlers.The deduplication logic lives in the vendored Preact source at
preact.module.jsin the event proxy.